/**
 开发团队 :
 开发人员 : ZBB295
 开发时间 : 2022/8/16 10:39
 文件名称 : article.js
 开发工具 : WebStorm
 */

//引入mongoose模块
const mongoose = require('mongoose')
const joi = require("joi");
//创建文章集合规则
const articleSchema = new mongoose.Schema({
    title:{
        type:String,
        maxlength: 20,
        minlength: 4,
        //必填，如果没有填写的话会出现请填写文章标题提示
        required:[true,'请填写文章标题']
    },
    author: {
        type: mongoose.Schema.Types.ObjectId,
        ref: 'User',
        required: [true, '请填写作者']
    },
    publishDate:{
        type:Date,
        default:Date.now()
    },
    cover:{
        type:String,
        default: null,
    },
    content:{
        type:String
    }
})

//使用文章规则创建集合
const Article = mongoose.model('Article',articleSchema);

const  validateArticle = (article)=>{
    //定义对象的验证规则
    const schema =joi.object({
        title:joi.string().min(4).max(20).required().error(new Error('用户标题不符合要求(要去4-20位长度)')),
    }).unknown();
    //unknown 表示默认不能传入指定外的属性。如果需要允许其他属性的出现，需要在跟上一个unknown方法
    // 实施验证
    return schema.validateAsync(article);
}

module.exports = {
    //在es6语法中对象的键和值名称一样可以省略掉值，下面是等价的
    // Article:Article
    Article,
    validateArticle
}